package pt.iscte.poo.freq20122013;

public class Ponto {
	private int x;
	private int y;
	private double factX;
	private double factY;

	public Ponto(int x, int y, double factX, double factY) {
		if (x < 0 || y < 0 || factX < 0 || factY < 0) {
			throw new IllegalArgumentException();
		}
		this.x = x;
		this.y = y;
		this.factX = factX;
		this.factY = factY;
	}

	public Ponto(int x, int y) {
		this(x, y, 1, 1);
	}

	public int getX() {
		return x;
	}

	public int getY() {
		return y;
	}

	// Método adicional não pedido no enunciado. Adicionado para ajudar na 2ª
	// solução da pergunta 3
	public double dist(Ponto p) {
		int dx = x - p.x;
		int dy = y - p.y;
		return Math.sqrt(dx * dx + dy * dy);
	}

	public Ponto coordenadaEscalada() {
		return new Ponto((int) (x * factX), (int) (y * factY));
	}

	@Override
	public String toString() {
		return "(" + x + "," + y + ")";
	}
}
